The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
In networked environments, it is important to have information detailing a state of various entities in the networked environment. Monitoring entities, including monitoring applications, obtain updates from the entities being monitored according to one of two approaches: pull-based or push-based. In pull-based approaches, the monitoring application explicitly polls the monitored entity every time it desires more data (i.e., an update of the state). The monitored entity is reactive. If the monitoring entity stops polling, the monitored entity will not send any more data.
Push-based approaches follow a publisher/subscriber paradigm where each monitored entity is a publisher and the monitoring entity is the subscriber. The subscriber specifies what data it is interested in and how it wants to receive it (i.e., subscribes). The publisher will send data (i.e., updates) to the subscriber after that specification (i.e., publishes).
In pull-based approaches using polling, the monitoring entity has complete control on resource usage but may issue redundant requests for the same data in every poll. Polling solutions offer challenges with regards to resilience and synchronization of data which requires timing that is precisely synchronized across multiple devices (to ensure data is retrieved at the same instance in time to make it comparable, and to avoid issues with regard to jitter and delay variations of requests which might cause data to be aggregated over intervals that are not evenly spaced). Note that when the state of the monitored entity does not change, multiple polls result in no additional information for the monitoring entity.
Push-based approaches can be more efficient in terms of resource usage since each message exchange provides the monitoring entity with additional information. Further, no separate message is sent to initiate each message exchange. Push-based approaches can be more timely, as changes can be pushed when they occur without needing to wait for the next polling interval. Synchronization is greatly facilitated and robustness is improved as missing or delayed polling requests are a non-issue. All these properties make pushing a highly desirable approach. Note that push-based approaches move intelligence (and therefore complexity) to the monitored entities.
In “on-change” or periodic push-based approaches, subscribers are notified when the state of the monitored entity changes (or it changes significantly). A challenge of such approaches is that under certain scenarios, a high rate of updates can result which in the worst case can overwhelm a subscriber and lead do problems such as indiscriminate dropping of data. For example, a subscription can concern a “subtree”, and a subscriber may not always know the number of data items in the subtree, hence the volume of data to expect from updates. Likewise, subscriptions can involve filters, and subscribers may not be able to predict in advance how many nodes or data items meet the filter criteria.